#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/socket.h>

#include "../utils/io.h"

int main() {
    // 创建一对socket用于测试
    int sockfd[2];
    if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockfd) == -1) {
        perror("socketpair");
        exit(EXIT_FAILURE);
    }
    
    // 创建行读取器
    LineReader *lr = linereader_create(sockfd[0], 1024);
    if (!lr) {
        fprintf(stderr, "Failed to create line reader\n");
        exit(EXIT_FAILURE);
    }
    
    // 测试数据
    const char *test_data[] = {
        "First line\n",
        "Second line with more content\n\n",
        "Partial line...oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo",
        " completed\n",
        "Last line\n",
        NULL
    };
    
    // 发送测试数据
    for (int i = 0; test_data[i] != NULL; i++) {
        write(sockfd[1], test_data[i], strlen(test_data[i]));
        usleep(10000); // 模拟网络延迟
    }
    
    // 读取并打印所有行
    char *line;
    int line_count = 0;
    while ((line = linereader_read_line(lr)) != NULL) {
        printf("Line %d: %s", ++line_count, line);
        free(line);
    }
    
    // 清理资源
    linereader_destroy(lr);
    close(sockfd[0]);
    close(sockfd[1]);
    
    return 0;
}